#include <iostream>
#include <signal.h>
int cnt = 0;

void handler(int signal)
{
    std::cout << "signal：" << signal << " cnt: " << cnt << std::endl;
    exit(-1);
}

int main()
{
    signal(SIGALRM, handler); // signal(2, handler); //自定义捕捉=捕捉信号+自定义行为
    alarm(5);                 // 1s -> SIGLRM
    sleep(2);
    int n = alarm(1);
    std::cout << n << std::endl;
    while (true)
    {
        //std::cout << "hello pid: " << getpid() << std::endl;
        cnt++;//有和没有IO操作，1s后cnt的大小
    }
    // 给自己发SIGABRT 6，但即使被捕捉，结束后，仍然会终止进程
    abort();

    return 0;
}

// int main()
// {
//     signal(SIGABRT, handler);//signal(2, handler); //自定义捕捉=捕捉信号+自定义行为
//     int cnt = 10;
//     while (cnt)
//     {
//         std::cout << "hello pid: " << getpid() << std::endl;
//         cnt--;
//         sleep(1);
//     }
//     //给自己发信号
//     //raise(3);//raise(SIGQUIT);
//     //给自己发SIGABRT 6，但即使被捕捉，结束后，仍然会终止进程
//     abort();

//     return 0;
// }
